package br.affCorp.view.impl;

import java.util.ArrayList;

import br.affCorp.controller.facade.impl.ObjetoDeAprendizagemFacade;
import br.affCorp.model.CategoriaDTO;
import br.affCorp.model.ComentarioDTO;
import br.affCorp.model.FormatoDTO;
import br.affCorp.model.IdiomaDTO;
import br.affCorp.model.ObjetoDeAprendizagemDTO;
import br.affCorp.model.TemaDTO;
import br.affCorp.model.UsuarioDTO;
import br.affCorp.view.FacesAb;
import br.util.AFFCorpWebUtil;
import br.util.WebContentUtil;
import br.util.WebMessage;

public class ObjetoDeAprendizagemCadastroFaces extends FacesAb {

	private ObjetoDeAprendizagemDTO objetoDeAprendizagemDTO;
	private ObjetoDeAprendizagemFacade objetoDeAprendizagemFacade;

	private String palavrasChave;

	public ObjetoDeAprendizagemCadastroFaces() {
		this.inicializarFaces();
	}

	protected void inicializarFaces() {
		this.inicializarDTO();
		this.inicializarLista();
		this.inicializarFacade();
	}

	public String inserir() {
		objetoDeAprendizagemDTO.setGeneral(objetoDeAprendizagemDTO.getTitulo());
		objetoDeAprendizagemDTO.setDono(getUsuarioDTO());
		try {
			objetoDeAprendizagemFacade.inserir(objetoDeAprendizagemDTO);
		} catch (Exception e) {
			WebMessage.addError(e);
		}
		return WebContentUtil.CADASTRO;
	}

	protected void inicializarDTO() {
		objetoDeAprendizagemDTO = new ObjetoDeAprendizagemDTO();
		this.inicializarDependenciasDTO();
	}

	public String visualizar() {

		try {
			objetoDeAprendizagemFacade.obterPorID(objetoDeAprendizagemDTO);
		} catch (Exception e) {
			e.printStackTrace();
		}
		if (!AFFCorpWebUtil.isNullOrEmpty(objetoDeAprendizagemDTO)) {
			return WebContentUtil.VISUALIZAR;
		}

		return WebContentUtil.USUARIO_PERFIL;
	}

	protected void inicializarDependenciasDTO() {

		objetoDeAprendizagemDTO.setIdioma(new IdiomaDTO());

		objetoDeAprendizagemDTO
				.setUsuariosQueReferenciam(new ArrayList<UsuarioDTO>());

		objetoDeAprendizagemDTO.setTemasRelacionados(new ArrayList<TemaDTO>());

		objetoDeAprendizagemDTO
				.setObjetosDeAprendizagemRelacionados(new ArrayList<ObjetoDeAprendizagemDTO>());

		objetoDeAprendizagemDTO.setComentario(new ArrayList<ComentarioDTO>());

		objetoDeAprendizagemDTO.setFormato(new FormatoDTO());

		objetoDeAprendizagemDTO.setDono(new UsuarioDTO());

		objetoDeAprendizagemDTO.setCategoria(new CategoriaDTO());

		objetoDeAprendizagemDTO.setAutor(new UsuarioDTO());
	}

	protected void inicializarFacade() {
		objetoDeAprendizagemFacade = new ObjetoDeAprendizagemFacade();
	}

	protected void inicializarLista() {
	}

	public ObjetoDeAprendizagemDTO getObjetoDeAprendizagemDTO() {
		return objetoDeAprendizagemDTO;
	}

	public void setObjetoDeAprendizagemDTO(
			ObjetoDeAprendizagemDTO objetoDeAprendizagemDTO) {
		this.objetoDeAprendizagemDTO = objetoDeAprendizagemDTO;
	}

	public String getPalavrasChave() {
		return palavrasChave;
	}

	public void setPalavrasChave(String palavrasChave) {
		this.palavrasChave = palavrasChave;
	}

}
